/*************************************************************************
 * Copyright 2008 David Almilli
 *  
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at 
 *  
 *     http://www.apache.org/licenses/LICENSE-2.0 
 *      
 * Unless required by applicable law or agreed to in writing, software 
 * distributed under the License is distributed on an "AS IS" BASIS, 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 * See the License for the specific language governing permissions and 
 * limitations under the License.
 **************************************************************************/
package com.almilli.catnip.tomcat5;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.coyote.http11.LegacyAccessibleHttp11Protocol;

public class HmeProtocol extends LegacyAccessibleHttp11Protocol {

    private static final Log log = LogFactory.getLog(HmeProtocol.class);
    
	public HmeProtocol() {
	}
    
    @Override
    protected LegacyAccessibleHttp11ConnectionHandler createAccessibleConnectionHandler() {
        return new HmeConnectionHandler(this);
    }

    protected static class HmeConnectionHandler extends LegacyAccessibleHttp11ConnectionHandler {

		protected HmeConnectionHandler(HmeProtocol protocol) {
			super(protocol);
		}

        public Object[] init() {
            Object thData[]=new Object[3];

            HmeProcessor processor = new HmeProcessor(proto.getMaxHttpHeaderSize());
            processor.setAdapter( proto.getAdapter() );
            processor.setThreadPool(getThreadPool());
            processor.setEndpoint(getEndpoint());
            processor.setMaxKeepAliveRequests( proto.getMaxKeepAliveRequests() );
            processor.setTimeout( proto.getTimeout() );
            processor.setDisableUploadTimeout( proto.getDisableUploadTimeout() );
            processor.setCompression( proto.getCompression() );
            processor.setCompressionMinSize( proto.getCompressionMinSize());
            processor.setNoCompressionUserAgents( proto.getNoCompressionUserAgents());
            processor.setCompressableMimeTypes( proto.getCompressableMimeType());
            processor.setRestrictedUserAgents( proto.getRestrictedUserAgents());
            processor.setSocketBuffer( proto.getSocketBuffer() );
            processor.setMaxSavePostSize( proto.getMaxSavePostSize() );
            processor.setServer( proto.getServer() );

            thData[LegacyAccessibleHttp11Protocol.THREAD_DATA_PROCESSOR]=processor;

            return afterInit(thData);
        }
    }

}
